/*!
 * \file WindowListener.h
 * \brief Contains the definition of WindowListener
 * \author CHOUVENC Guillaume, DE CHOULOT Fabien, MATHIEU Fabien
 */

#ifndef WINDOWLISTENER_H
#define WINDOWLISTENER_H

#include "bga/system/Listener.h"
#include "bga/window/WindowEvent.h"

/**
 * \namespace bga
 * \brief API namespace
 */
namespace bga
{

/*!
 * \brief Represents a Window Listener
 *
 * This class represents a Window Listener. We find all the functions to handle Window Event
 */
class BOARD_HELL_ENGINE WindowListener : public Listener
{
	public:
        /*!
         * \brief Function to handle the request to close the window
         * \param event : WindowEvent containing all the information about the sent event
         *
         * Function to handle the request to close the window. This function is abstract.
         */
		virtual void windowClosed(const bga::WindowEvent &event) = 0;

		/*!
         * \brief Function to handle the resizing of the window
         * \param event : WindowEvent containing all the information about the sent event
         *
         * Function to handle the resizing of the window. This function is abstract.
         */
		virtual void windowResized(const bga::WindowEvent &event) = 0;

		/*!
         * \brief Function to handle the loss of focus of the window
         * \param event : WindowEvent containing all the information about the sent event
         *
         * Function to handle the loss of focus of the window. This function is abstract.
         */
		virtual void windowLostFocus(const bga::WindowEvent &event) = 0;

		/*!
         * \brief Function to handle the gain of focus of the window
         * \param event : WindowEvent containing all the information about the sent event
         *
         * Function to handle the gain of focus of the window. This function is abstract.
         */
		virtual void windowGainFocus(const bga::WindowEvent &event) = 0;
	protected:

	private:

};

}

#endif // WINDOWLISTENER_H
